<?php

require_once(BaseConfig::LoadClass('load_file.class.php'));
require_once(BaseConfig::LoadClass('load_xls.class.php' ));

class LoadCVS extends LoadXLS {
  /**
   * Arreglo con la info del archivo CVS leido
   * @var array
   */
  var $arrInfoArchivoCVS;
  
  /**
   * Se sobrecarga esta funcion para abrir el archivo como texto normal.
   */
  function __AbrirArchivo() {
    $this->intIndiceActual = $this->intPrimerFila;
    $this->intColActual    = $this->intPrimerFila;
    
    $this->arrInfoArchivoCVS = file($this->strArchivoFuente);
    if(count($this->arrInfoArchivoCVS) < $this->intIndiceActual) {
      $this->EOF = true;
    } else {
      $this->EOF = false;
    }
  }
  
  /**
   *  Chequeo para ver si esta linea está vacia
   */
  function __ChecarLineaVacia() {
    return (@Variables::DeepTrim($this->arrInfoArchivoCVS[$this->intColActual]) == "" ? 1 : 0);
  }

  function __ObtenerSiguienteLinea() {
    if($this->intIndiceActual >= count($this->arrInfoArchivoCVS)) {
      $this->EOF = true;
      return;
    }

    $bolVacio = $this->__ChecarLineaVacia();
    // Si la linea esta vacia, se necesita obtener la siguiente
    if($bolVacio) {
      $this->intIndiceActual++;
      $this->intColActual   ++;
      return $this->__ObtenerSiguienteLinea();
    }

    $arrRet = array();
    
    $arrRet = explode("|", $this->arrInfoArchivoCVS[$this->intColActual]);
    // Quitar el ultimo salto de linea
    $arrRet[count($arrRet) - 1] = substr($arrRet[count($arrRet) - 1], 0, -2);
    
    $this->__arrLineaActual = $arrRet;
    $this->intIndiceActual++;
    $this->intColActual++;
    
    $this->CambiarValoresDiccionario();
  }
  
  function CambiarValoresDiccionario() {
    foreach($this->__arrDiccionario as $intColumna => $arrInfoColumna) {
      if(!isset($arrInfoColumna[$this->__arrLineaActual[$intColumna]])) {
        $this->__arrErroresCarga[] = "Linea {$this->intIndiceActual}: No se encuentra la entrada del diccionario [$intColumna] para la clave [{$this->__arrLineaActual[$intColumna]}]";
      } else {
        $this->__arrLineaActual[$intColumna] = $arrInfoColumna[$this->__arrLineaActual[$intColumna]];
      }
    }
  }
}

?>